﻿Shader "Lit/Simple Diffuse"
{
	Properties
	{
		[NoScaleOffset] _MainTex("Texture", 2D) = "white" {}
	}
		SubShader
	{
		Pass
		{
		// 指示我们的通道是前向渲染管线中的
		// "基础" 通道。它可设置环境光和主
		// 方向光数据；光线方向为 _WorldSpaceLightPos0
		// 而颜色为 _LightColor0
Tags {"LightMode" = "ForwardBase"}

		CGPROGRAM
		#pragma vertex vert
		#pragma fragment frag
		#include "UnityCG.cginc" // 对于 UnityObjectToWorldNormal
		#include "UnityLightingCommon.cginc" // 对于 _LightColor0

		struct v2f
		{
			float2 uv : TEXCOORD0;
			fixed4 diff : COLOR0; // 漫射光照颜色
			float4 vertex : SV_POSITION;
		};

		v2f vert(appdata_base v)
		{
			v2f o;
			o.vertex = UnityObjectToClipPos(v.vertex);
			o.uv = v.texcoord;
			// 在世界空间中获取顶点法线
			half3 worldNormal = UnityObjectToWorldNormal(v.normal);
			// 标准漫射（兰伯特）光照的法线和
			// 光线方向之间的点积
			half nl = max(0, dot(worldNormal, _WorldSpaceLightPos0.xyz));
			// 考虑浅色因素
			o.diff = nl * _LightColor0;
			return o;
		}

		sampler2D _MainTex;

		fixed4 frag(v2f i) : SV_Target
		{
			// 样本纹理
			fixed4 col = tex2D(_MainTex, i.uv);
		// 乘以光照
		col *= i.diff;
		return col;
	}
	ENDCG
}
	}
}